using System;
using System.Collections.Generic;
using System.Text;

namespace Toenda.Foundation.PluginBase {
	/// <summary>
	/// interface IPlugin
	/// </summary>
	public interface IPlugin {
		/// <summary>
		/// Get the name
		/// </summary>
		string PluginName {
			get;
		}

		/// <summary>
		/// Get the description
		/// </summary>
		string PluginDescription {
			get;
		}

		/// <summary>
		/// Get the author
		/// </summary>
		string PluginAuthor {
			get;
		}

		/// <summary>
		/// Get the version
		/// </summary>
		string PluginVersion {
			get;
		}

		/// <summary>
		/// Activate the plugin
		/// </summary>
		void ActivatePlugin();

		/// <summary>
		/// Get a copy of the current object
		/// </summary>
		/// <returns></returns>
		IPlugin GetCopy();

		/// <summary>
		/// Initialize the plugin, do internal work
		/// </summary>
		/// <returns></returns>
		void Init();

		/// <summary>
		/// Initialize the plugin from another plugin
		/// </summary>
		/// <param name="plugin"></param>
		void Init(IPlugin plugin);
	}
}
